# 登录业务
import allure

from base.imp.base import base_imp, bases_imp
from selenium.webdriver.common.by import By

# 定义对象库层并继承base_imp类
class login(base_imp):
    def __init__(self):
        # 调用获取驱动
        super().__init__()
        #账号元素
        self.moble = By.XPATH, '//*[@id="app"]/div/form/div[2]/div/div/input'
        #密码元素
        self.password = By.XPATH, '//*[@id="app"]/div/form/div[3]/div/div/input'
        #登陆元素
        self.start = By.XPATH, '//*[@id="app"]/div/form/button'

    def get_moble(self):
        # 使用账号元素封装输入方法
        return self.get_element(self.moble)

    def get_password(self):
        # 使用密码元素封装输入方法
        return self.get_element(self.password)

    def get_start(self):
        # 使用登陆元素封装点击方法
        return self.get_element(self.start)
# 定义操作层并继承bases_imp类
class login_imp(bases_imp):
    def __init__(self):
        # 实例化login，方便调用
        self.login = login()

    @allure.step(title="输入账号")
    def imp_moble(self, moble):
        # 封装账号输入操作方法
        self.imp_sta(self.login.get_moble(), moble)

    @allure.step(title="输入密码")
    def imp_password(self, password):
        # 封装密码输入操作方法
        self.imp_sta(self.login.get_password(), password)

    @allure.step(title="点击登录")
    def imp_start(self):
        # 封装点击操作方法
        self.login.get_start().click()

#定义业务层
class login_sta:
    def __init__(self):
        # 实例化
        self.login_imp = login_imp()

    def log_start(self, moble, password):
        # 整合方法，添加参数
        self.login_imp.imp_moble(moble)
        self.login_imp.imp_password(password)
        self.login_imp.imp_start()